package day05.day05;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

/**
 * 将当前目录下的所有obj文件获取到，并进行
 * 反序列化后输出每个用户的信息(直接输出反序
 * 列化后的User对象即可)
 * @author Xiloer
 *
 */
public class Test04 {
    public static void main(String[] args) {
        File dir = new File(".");
        //获取当前目录下的所有obj文件
        File[] subs = dir.listFiles(f->f.getName().endsWith(".obj"));
        for(int i=0;i<subs.length;i++){
            File file = subs[i];
            try (
                    FileInputStream fis = new FileInputStream(file);
                    ObjectInputStream ois = new ObjectInputStream(fis);
            ){
                Object obj = ois.readObject();
                if(obj instanceof User){
                    User user = (User)obj;
                    System.out.println(user);
                }


            } catch (IOException | ClassNotFoundException e) {
                e.printStackTrace();
            }

        }
    }

}

/*
    提示代码:
	需要用到的语句，尝试按照正确顺序将下列代码并放在main方法中完成需求，
	并在注释中标注每句话的作用，
	//【在这里标注该句代码意义】
    File dir = new File(".");
    表示输出该目录下的所有子目录

    //【在这里标注该句代码意义】
    for(int i=0;i<subs.length;i++){

    }
    遍历subs的所有文件


    //【在这里标注该句代码意义】
    File[] subs = dir.listFiles((f)->f.getName().endsWith(".obj"));
    输出subs文件下，以.obj结尾的文件

    //【在这里标注该句代码意义】
    FileInputStream fis = new FileInputStream(sub);
    文件输入流

    //【在这里标注该句代码意义】
    File sub = subs[i];//从数组中获取每一个obj文件
    从数组中获取每一个obj文件

    //【在这里标注该句代码意义】
    System.out.println(user);
    输出以.obj结尾的文件名称

    //【在这里标注该句代码意义】
    ObjectInputStream ois = new ObjectInputStream(fis);
    对象输入流

    //【在这里标注该句代码意义】
    User user = (User)obj;
    强转

    //【在这里标注该句代码意义】
    Object obj = ois.readObject();
    读写操作

    //【在这里标注该句代码意义】
    if(obj instanceof User){
    转换

    }

 */